#! /usr/bin/env python
# -*- coding: utf-8 -*-

from PyQt4 import QtCore, QtGui
import sys, os, sqlite3, todo
from elixir import *
from ventanaVendedorUI import Ui_Form

class FormVendedor(QtGui.QMainWindow):
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.ui = Ui_Form()
        self.center()
        self.ui.setupUi(self)

        self.ui.treeWidget.resizeColumnToContents(0)
        self.ui.treeWidget.resizeColumnToContents(1)
        self.ui.treeWidget.resizeColumnToContents(2)
        self.ui.treeWidget.resizeColumnToContents(3)
        self.ui.treeWidget.resizeColumnToContents(4)
        self.cargaVendedores()
        self.ui.botonActualizar.setHidden(True)
        self.ui.labelError.setText("")        

    def center(self):
        qr = self.frameGeometry()
        cp = QtGui.QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def cargaVendedores(self):
        self.ui.treeWidget.clear()
        for vendedor in todo.Vendedor.query.all():
            item = QtGui.QTreeWidgetItem([str(vendedor.id), vendedor.nombre, vendedor.apellido_paterno, vendedor.apellido_materno, vendedor.usuario, vendedor.password])
            item.setTextAlignment(0, 2)
            self.ui.treeWidget.addTopLevelItem(item)

    def agregar(self):
        nombre = self.ui.campoNombre.text()
        apellido_paterno = self.ui.campoApellidoPaterno.text()
        apellido_materno = self.ui.campoApellidoMaterno.text()
        usuario = self.ui.campoUsuario.text()
        password = self.ui.campoPassword.text()

        if nombre == "" or apellido_paterno == "" or apellido_materno == "" or password == "" :
            self.ui.labelError.setText("Debe proporcionar un nombre, apellido paterno, apellido materno y contraseña")
            self.ui.labelError.setStyleSheet("color:red")

        else:
            if todo.Vendedor.get_by(usuario=unicode(usuario).lower()):
                self.ui.labelError.setText("El usuario ya existe, cambielo por otro")
                self.ui.labelError.setStyleSheet("color:red")

            else:
                todo.Vendedor(nombre=unicode(nombre), apellido_paterno=unicode(apellido_paterno), apellido_materno=unicode(apellido_materno), usuario=unicode(usuario).lower(), password=unicode(password))
                session.commit()
                self.limpiar()
                self.cargaVendedores()

    def limpiar(self):
        self.ui.campoNombre.setText("")
        self.ui.campoApellidoPaterno.setText("")
        self.ui.campoApellidoMaterno.setText("")
        self.ui.campoUsuario.setText("")
        self.ui.campoPassword.setText("")
        self.ui.campoUsuario.setEnabled(True)
        self.ui.botonActualizar.setHidden(True)
        self.ui.botonAgregar.setHidden(False)
        self.ui.labelTitulo.setText("Nuevo Vendedor - Indigo")
        self.ui.labelError.setText("")

    def eliminar(self):
        item = self.ui.treeWidget.currentItem()
        i = self.ui.treeWidget.indexOfTopLevelItem(item)

        mensaje = u"¿Esta seguro que desea eliminar el usuario: %s?" % item.text(4)
        reply = QtGui.QMessageBox.question(self, 'Mensaje',
            mensaje, QtGui.QMessageBox.Yes | 
            QtGui.QMessageBox.No, QtGui.QMessageBox.No)

        if reply == QtGui.QMessageBox.Yes:
            self.ui.treeWidget.takeTopLevelItem(int(i))
            vendedor = todo.Vendedor.get(int(item.text(0)))
            vendedor.delete()
            session.commit()
            self.cargaVendedores()
            
    def editar(self):
        item = self.ui.treeWidget.currentItem()      
        self.ui.campoNombre.setText(item.text(1))
        self.ui.campoApellidoPaterno.setText(item.text(2))
        self.ui.campoApellidoMaterno.setText(item.text(3))
        self.ui.campoUsuario.setText(item.text(4))
        self.ui.campoUsuario.setEnabled(False)
        self.ui.campoPassword.setText(item.text(5))       
        self.ui.botonActualizar.setHidden(False)
        self.ui.botonAgregar.setHidden(True)
        self.ui.labelTitulo.setText("Editar Vendedor - Indigo")
        
    def guardar(self):
        nombre = self.ui.campoNombre.text()
        apellido_paterno = self.ui.campoApellidoPaterno.text()
        apellido_materno = self.ui.campoApellidoMaterno.text()
        usuario = self.ui.campoUsuario.text()
        password = self.ui.campoPassword.text()

        if nombre == "" or apellido_paterno == "" or apellido_materno == "" or password == "" :
            self.ui.labelError.setText("Debe proporcionar un nombre, apellido paterno, apellido materno y contraseña")
            self.ui.labelError.setStyleSheet("color:red")

        else:
            vendedor = todo.Vendedor.get_by(usuario=unicode(usuario))
            vendedor.nombre = unicode(nombre)
            vendedor.apellido_paterno = unicode(apellido_paterno)
            vendedor.apellido_materno = unicode(apellido_materno)
            vendedor.password = unicode(password)
            session.commit()
            self.limpiar()
            self.cargaVendedores()

if __name__ == '__main__':
    todo.initDB()
    app = QtGui.QApplication(sys.argv)
    myapp = FormVendedor()
    myapp.show()
    sys.exit(app.exec_())